﻿using System.Collections.Generic;
using System.ServiceModel;
using DataCore.DomainObjects;

namespace DataCore.Interfaces{

    [ServiceContract]
    interface IAtributeTypeService
    {
        /// <summary>
        /// Получить список атрибутных типов
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        List<AtributeType> GetAllAtributeTypes();

        /// <summary>
        /// Добавить атрибутный тип
        /// </summary>
        /// <param name="atributeType">Добавляемый атрибутный тип</param>
        [OperationContract]
        void AddAtributeType(AtributeType atributeType);

        /// <summary>
        /// Удалить атрибутный тип
        /// </summary>
        /// <param name="atributeType">Удаляемый атрибутный тип</param>
        [OperationContract]
        void RemoveATributeType(AtributeType atributeType);

        /// <summary>
        /// Получить все используемые атрибуты в системе классов
        /// </summary>
        /// <returns>Список используемых атрибутных типов</returns>
        [OperationContract]
        List<AtributeType> GetAtributeTypeByClassSystem();

        /// <summary>
        /// Получить все атрибутные типы используемые в классе
        /// </summary>
        /// <param name="metaClass">Класс</param>
        /// <returns>Список используемых атрибутных типов</returns>
        [OperationContract]
        List<AtributeType> GetAtributeTypesByClass(MetaClass metaClass);
    }
}
